package com.juhui.system.api.domain.bo;


import com.juhui.common.core.constant.UserConstants;
import com.juhui.common.core.xss.Xss;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 用户信息业务对象 sys_user
 *
 * @author Michelle.Chung
 */

@Data
@NoArgsConstructor
public class RemoteUserBo implements Serializable {

	@Serial
	private static final long serialVersionUID = 1L;

	/**
	 * 用户ID
	 */
	private Long userId;


	/**
	 * 部门ID
	 */
	private Long deptId;

	/**
	 * 用户账号
	 */
	@Xss(message = "用户账号不能包含脚本字符")
	@NotBlank(message = "用户账号不能为空")
	@Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符")
	private String userName;

	/**
	 * 用户昵称
	 */
	@Xss(message = "用户昵称不能包含脚本字符")
	@Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符")
	private String nickName;

	/**
	 * 用户类型（sys_user系统用户）
	 */
	private String userType;

	/**
	 * 用户邮箱
	 */
	@Email(message = "邮箱格式不正确")
	@Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符")
	private String email;

	/**
	 * 手机号码
	 */
	private String phonenumber;

	/**
	 * 用户性别（0男 1女 2未知）
	 */
	private String sex;

	/**
	 * 头像地址
	 */
	private Long avatar;

	/**
	 * 密码
	 */
	private String password;

	/**
	 * 帐号状态（0正常 1停用）
	 */
	private String status;

	/**
	 * 最后登录IP
	 */
	private String loginIp;

	/**
	 * 最后登录时间
	 */
	private Date loginDate;

	/**
	 * 备注
	 */
	private String remark;

	/**
	 * 数据权限 当前角色ID
	 */
	private Long roleId;

	public RemoteUserBo(Long userId) {
		this.userId = userId;
	}

	public boolean isSuperAdmin() {
		return UserConstants.SUPER_ADMIN_ID.equals(this.userId);
	}

}
